package main

import "fmt"

type person struct {
	name string
	age  int
}

// 构造函数
// 可以返回结构体或者结构体指针
// 当结构体比较大时候,尽量使用结构体指针,减少内存开销
func newPerson(name string, age int) *person {
	return &person{
		name: name,
		age:  age,
	}
}

type dog struct {
	name string
}

func newDog(name string) dog {
	return dog{
		name: name,
	}
}
func main() {
	p1 := newPerson("周瑜", 2000)
	p2 := newPerson("诸葛", 2000)
	fmt.Println(p1, p2) // {周瑜 2000} {诸葛 2000}

	d1 := newDog("二狗")
	fmt.Println(d1) // {二狗}
}
